%Prueba de generación de la misma imagen con distintos pulsos
close all
clear variables
clc
addpath(genpath('../'))

cm=0;
cM=0;
retardo=0;
downsampleFlag=1;
for i=[1:7,29:31]
    str=['../../Data110721/DataSet' num2str(i)];
    load(str)
    pulso=wave;
    if (size(pulso,1)==1)&&(downsampleFlag==1) %Para poder hacer el downsample
        pulso(2,1:size(pulso,2))=0;
    end
    Foco=Foco/2;

c=1500; %Velocidad de propagacion en m/s
d=(11*10^-3)/(31); %Distancia entre sensores
if retardo==0 %Me olvidé de guardarlo
    retardo=(2*DistInic/1000)/c;
end
    

ResX=128;
ResZ=8192;



%---------------------------------------------
%Pre-acondicionamiento de la señal
%---------------------------------------------
data=RF3;
[M,N]=size(data);
%Ecualizo la señal para todos los canales
invE=1./sqrt(sum(data.*data));
%invE=1./mean(abs(data));
invE=invE./mean(invE);
data=data.*(ones(M,1)*invE);


%Filtrado
%[B,A]=butter(10,[0.05 0.3]);
%data=filter(B,A,data); %Introduce atraso por fase, arreglar!
if downsampleFlag==1
    data=downsample(data,2); 
    pulso=downsample(pulso,2);
    efs=esf*10^6/2;
    rfs=rsf*10^6/2;
else
    efs=esf*10^6;
    rfs=rsf*10^6;
end
[M,N]=size(data);

%---------------------------------------------
% PROCESAMIENTO
%--------------------------------------------

% [D1,X1,Z1]=BeamForming(data,d,rsf,c,0.015/1500);
% figure
% imshow(D1/max(max(D1)))
% figure
% hold on
% title('Beam Forming pasivo con redondeo')
% imagesc(X1,Z1,abs(D1)')
% hold off

%pulso=[zeros(1,N);ones(1,N)];
[D,X,Z]=BeamFormingActivo(pulso,data,d,efs,rfs,retardo,c,0.01,0.07,0,d*32,ResX,ResZ);
if sum(sum(imag(D)))~=0
    disp('Warning: el resultado es complejo')
end
if cM==0
    cM=max(max(real(D)));
end
if cm==0
    cm=min(min(real(D)));
end
figure
hold on
title(['Beam Forming activo, F=' num2str(Foco)])
imagesc(X,Z,real(D)')
caxis([cm cM])
hold off
figure
hold on
title(['Beam Forming activo, F=' num2str(Foco)])
mesh(X,Z,real(D)')
caxis([cm cM])
hold off
savestr=[str 'SinFiltro' num2str(ResX) 'x' num2str(ResZ)];
%savestr=[str num2str(ResX) 'x' num2str(ResZ)];
save(savestr,'X','Z','D');
end